package co.edu.udea.impl;


import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;

import co.edu.udea.dao.HibernateSessionFactory;
import co.edu.udea.dao.UsuarioDao;
import co.edu.udea.model.Usuario;
import exceptions.ExecptionRTF;

/**
 * 
 * @author Cristina Isabel Mejia Gonzalez
 *
 */
public class UsuarioImp implements UsuarioDao {

	Logger log = Logger.getLogger(this.getClass());
	
	/**
	 * @param login, Metodo que permite verificar si un usuario existe
	 * @return devuelve true si el usuario existe o false en caso contrario
	 */
	@Override
	public boolean login(String login) throws ExecptionRTF{
		Session sesion = null;
		Transaction tx = null;
		try {
			sesion = HibernateSessionFactory.getInstance().getSession();
			boolean existe = true;
			tx = sesion.beginTransaction();
			Usuario user = (Usuario)sesion.get(Usuario.class, login);
			
			if(user == null) existe = false;

			return existe;
		} catch (Exception e) {

			log.error("No se pudo identificar usuario", e); 
			throw new ExecptionRTF(e);
		}
	}
	
	/**
	 * @param user, Metodo que permite guadar un usuario nuevo
	 * @return devuelve el usuario si el proceso fue exitoso
	 */
	@Override
	public Usuario guardar(Usuario user) throws ExecptionRTF {
		Session sesion = null;
		Transaction tx = null;
		try {
			sesion = HibernateSessionFactory.getInstance().getSession();
			tx = sesion.beginTransaction();
			sesion.save(user);
			tx.commit();
			
			return user;
			
		} catch (Exception e) {

			log.error("No se pudo guardar el usuario", e); 
			throw new ExecptionRTF(e);
		}
	}

}
